package com.noodles.mall.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.noodles.mall.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.noodles.mall.vo.PageVo;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;
import java.util.Map;

/** 用户 **/
public interface UserService extends IService<User>, UserDetailsService {
    /** 增加 **/
    User insert(User user);

    /** 删除: 单个或批量 **/
    boolean delete(List<Integer> ids);

    /** 修改: 根据id修改所有 **/
    boolean update(User user);

    /** 修改: image_url **/
    boolean updateUrl(Integer id, String url);

    /** 单个查询: id **/
    User selectOne(Integer id);

    /** 单个查询: username **/
    User selectOne(String username);

    /** 查询用户数量 **/
    Integer selectCount();

    /** 查询列表: 性别比例 **/
    List<Map<String, Object>> selectListWithSexRatio();

    /** 分页查询: wrapper **/
    PageVo selectPage(Long current, Long size, LambdaQueryWrapper<User> wrapper);

    /** 分页查询: 无 **/
    PageVo selectPage(Long current, Long size);

    /** 分页查询: word **/
    PageVo selectPage(Long current, Long size, String word);
}
